草庐IT

Android AsyncTask 内存泄漏

全部标签

c++ - Qt : AddressBook tutorial 中的内存管理

到目前为止,我已经了解到,当父对象被删除时,Qt会释放所有子对象的内存。此外,通常不必关心在堆栈上创建的对象(即不是指针)的内存管理。现在,当我做得很好的时候"AddressBook"tutorial,我在第5部分找到了这个:AddressBook::AddressBook(QWidget*parent):QWidget(parent){dialog=newFindDialog;}完整的源代码可用:addressbook.haddressbook.cppfinddialog.h这里,dialog是AddressBook的私有(private)成员,它是指向FindDialog的指针。F

c++ - gdb 重新设置断点时出错(无法访问内存)

我正在尝试让gdb在pcbsd10(freebsd10)中设置一个断点。我已经用调试符号编译了我的代码,这里是gdb的输出GNUgdb(GDB)7.7Copyright(C)2014FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarranty"fordetails

C++ 从内存中执行函数

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我最近想到了可预编译的脚本语言,它会在程序加载期间被翻译成机器代码。假设我可以自己生成这个二元函数。现在我需要以某种方式执行它。一般方案如下所示:char*binary=compile("script.sc");pushArgsToStack(1,7);memexec(binary);intret=getEax();有机会让它发挥作用吗?此外,将jmp调用到C++函数地址是否会像计划的那样工作?我的意思是

java - 返回对成员变量的引用时的 SWIG-Java 内存管理

我正在使用SWIG从Java访问C++代码。C++中的getter通常返回const引用:classB{public:constA&getA()const{returna_;}private:Aa_;};生成SWIG包装器。Java中的B::getA按预期返回引用。然而JVM并不知道这个引用与classB相关联。这可能会导致引用损坏:publicAcreateA(){Bb=newB();returnb.getA();}一旦垃圾收集器销毁Bb并且JVM对此一无所知,从createA返回的对象将无效。SWIG提供了解决此问题的文档:referencesandswig.然而,这意味着我需要手

c++ - 仅当有足够内存可用时 vector push_back

我目前正在构建一个使用vector类动态处理大量内存的代码。代码正在使用push_back构建vector,其中重要的是要注意vector是二维的,表示数据矩阵。根据情况,该矩阵可能很小,也可能变得异常大。例如,数据矩阵可以有几行,每行1000列,也可以有1000行,列数相同,全是double数据类型。显然,这很容易成为一个问题,因为1000x1000x8=8000000字节,因此在内存中代表8MB。但是多10倍的列和多10倍的行呢?(这很容易在我的代码中发生)。我通过将数据矩阵写入硬盘来解决这个问题,但是这种方法相当慢,因为我没有充分利用RAM。我的问题:如何构建由vector>表示

c++ - 这个锁的内存屏障是否正确?

这是正确的吗?我是否正确地假设在std::atomic_flag上应用内存排序不为通用锁提供同步?#includeclassSpinlock{public:Spinlock():f(ATOMIC_FLAG_INIT){}voidlock(){while(f.test_and_set(std::memory_order_relaxed));std::atomic_thread_fence(std::memory_order_acquire);}voidunlock(){std::atomic_thread_fence(std::memory_order_release);f.clear(

clang 中的 C++ 结构内存开销?

clang中是否存在每个结构的内存开销?通常结构的大小只是其所有成员的总大小。但是在clang中似乎不是这样:#includeusingnamespacestd;structObj{intx;inty;};intmain(){inta=42;intb=43;Objobj={100,101};intc=44;cout我用clang++program.cpp编译,没有优化。版本:Ubuntuclangversion3.4-1ubuntu3(tags/RELEASE_34/final)(basedonLLVM3.4)Target:x86_64-pc-linux-gnuThreadmodel:

c++ - 如何找到最常用的内存区域?

我想分析一个大型C++应用程序并确定哪些数据(或内存区域)被获取最多。基本上,我希望能够执行类似于处理器的MFU缓存算法的操作,以确定要在L2/L3缓存中存储的内容。令人惊讶的是,网上几乎没有关于任何人试图实现这一目标的信息。编辑:将MRU更改为MFU编辑2:为了澄清,我需要地址,或指向地址的数据结构。 最佳答案 您可以使用Pintool记录所有内存访问并计算缓存命中/未命中。 关于c++-如何找到最常用的内存区域?,我们在StackOverflow上找到一个类似的问题:

c++ - 我可以使用 STL 分配器将整个 STL 容器及其内容(键和值)存储在我创建的内存块中吗?

我试图了解我是否可以使用STL分配器(http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759)或任何其他C++机制来达到我的目的。我自己分配了一个很大的内存块。我想创建一个像map这样的STL容器,这样容器,包括存储在容器中的键和值,都存储在这个内存块中。明确地说,当我说“容器,包括键和值”时,我指的是通常由容器内的代码在堆上分配的所有内存位。例如。图形结构,以及键和值的拷贝。map对象本身(不包括上述位)在我的内存块中的存储将由我处理。显然,我找不到其他东西来为我做这件事。我知道有些回复可能是

C++做引用占用内存

我读到引用只是符号表中存在的变量的别名。考虑以下代码intmain(){inty=6;int&z=y;intk=43;test(2,y,5,78);cout对于我得到的输出0039F7400039F8480039F7480039F74C0039F8480039F8480039F830如果reference在栈中不占内存,为什么会偏移内存。例如。在函数测试中,局部变量a在0039F740,g在0039F748。g不应该在0039F744吗?有人能详细解释一下吗? 最佳答案 您的函数有四个参数。每个参数都必须传递给函数。其中一个参数是引